<?php
/**
 * cookie封装类
 * 
 * 构造新的cookie对象后，需要调用IResponse.addCookie(ICookie $cookie)并刷新浏览器才能生效
 *
 * @version $Id: ICookie.php 312 2008-04-23 16:29:38Z iwind $
 * @package util.core
 */
class ICookie extends IObject  {
	private $name;
	private $value;
	private $path;
	private $secure;
	private $domain;
	private $maxAge;
	
	/**
	 * 构造器
	 *
	 * @param string $name cookie名
	 * @param string $value cookie值
	 */
	public function __construct($name, $value) {
		$this->name = $name;
		$this->value = $value;
	}
	
	/**
	 * 设置名称
	 *
	 * @param string $name 名称
	 */
	public function setName($name) {
		$this->name = $name;
	}
	
	/**
	 * 取得名称
	 *
	 * @return string
	 */
	public function getName() {
		return $this->name;
	}
	
	/**
	 * 设置值
	 *
	 * @param scalar $value 设置值
	 */
	public function setValue($value) {
		$this->value = $value;
	}
	
	/**
	 * 取得值
	 *
	 * @return scalar
	 */
	public function getValue() {
		return $this->value;
	}
	
	/**
	 * 设置path
	 *
	 * @param string $path 有效的路径
	 */
	public function setPath($path) {
		$this->path = $path;
	}
	
	/**
	 * 取得path
	 *
	 * @return string
	 */
	public function getPath() {
		return $this->path;
	}
	
	/**
	 * 设置是否为安全连接
	 *
	 * @param integer $secure 是否为安全连接（0或1）
	 */
	public function setSecure($secure) {
		$this->secure = $secure;
	}
	
	/**
	 * 判断是否为安全连接
	 *
	 * @return integer
	 */
	public function getSecure() {
		return $this->secure;
	}
	
	/**
	 * 设置有效域
	 *
	 * @param string $domain 域
	 */
	public function setDomain($domain) {
		$this->domain = $domain;
	}
	
	/**
	 * 取得有效域
	 *
	 * @return string
	 */
	public function getDomain() {
		return $this->domain;
	}
	
	/**
	 * 设置生存期
	 *
	 * @param integer $maxAge 生存期
	 */
	public function setMaxAge($maxAge) {
		$this->maxAge = $maxAge;
	}
	
	/**
	 * 取得生存期
	 *
	 * @return integer
	 */
	public function getMaxAge() {
		return $this->maxAge;
	}
	
	/**
	 * 发送到浏览器
	 * 
	 * 同IResponse::addCookie
	 *
	 * @since 0.2
	 */
	public function send() {
		IResponse::addCookie($this);
	}
	
	/**
	 * 转换为字符串
	 *
	 * @return string
	 * @since 0.2
	 */
	public function __toString() {
		return strval($this->value);
	}
	
	/**
	 * 取得cookie值
	 *
	 * @param string $name cookie名
	 * @return string|null
	 * @see IRequest::cookie
	 * @since 0.2
	 */
	public static function get($name) {
		return IRequest::cookie($name);
	}
}

?>